#ifndef __INTERFACE_H__
#define __INTERFACE_H__

// 下载环境  sudo apt-get install libncurses5-dev libncursesw5-dev
// 编译  -lncursesw
#include <functional>
#include <string>
struct InterfacePrivate;
class Interface {
public:
    enum Keyboard {
        Key_down = 0402, // 下键
        Key_up,
        Key_left,
        Key_right
    };
    Interface();
    ~Interface();
    // 清屏
    void clear();
    // 画矩形
    void drawBox(int width, int height);
    // 绘制文本
    void drawText(int x, int y, const std::string& text);
    // 启用键盘
    void EnableKeyboard(bool enable);
    // 显示光标
    void ShowCursor(bool show);
    // 获得输入
    std::string GetInput(int x, int y);
    // 密码输入
    std::string GetPassword(int x, int y);
    // 键盘事件回调
    void KeyboardEvent(const std::function<void(int)>& callback);

private:
    InterfacePrivate* p;
};

std::pair<std::string, std::string> CreateLoginInterface();

#endif